internal sealed class Class_c : IClass_d
{
	private static int m_b = 16;

	private long[] m_c = new long[2];

	private long[] m_d = new long[4];

	private byte[] e = new byte[64];

	private byte[] f = new byte[16];

	private static byte[] g;

	private void a(byte[] A_0, int A_1, int A_2)
	{
		b(A_0, A_1, A_2);
	}

	void IClass_d.b(byte[] A_0, int A_1, int A_2)
	{
		//ILSpy generated this explicit interface implementation from .override directive in a
		this.a(A_0, A_1, A_2);
	}

	private void b()
	{
		c();
	}

	void IClass_d.b()
	{
		//ILSpy generated this explicit interface implementation from .override directive in b
		this.b();
	}

	private int a(byte[] A_0, int A_1)
	{
		return b(A_0, A_1);
	}

	int IClass_d.b(byte[] A_0, int A_1)
	{
		//ILSpy generated this explicit interface implementation from .override directive in a
		return this.a(A_0, A_1);
	}

	private void b(byte[] A_0, int A_1, int A_2, byte[] A_3, int A_4, ref byte[] A_5)
	{
		a(A_0, A_1, A_2, A_3, A_4, ref A_5);
	}

	void IClass_d.b(byte[] A_0, int A_1, int A_2, byte[] A_3, int A_4, ref byte[] A_5)
	{
		//ILSpy generated this explicit interface implementation from .override directive in b
		this.b(A_0, A_1, A_2, A_3, A_4, ref A_5);
	}

	private void a(byte[] A_0, int A_1, int A_2, byte[] A_3, int A_4, ref byte[] A_5)
	{
	}

	private long d(long A_0, long A_1, long A_2)
	{
		return (A_0 & A_1) | (~A_0 & A_2);
	}

	private long c(long A_0, long A_1, long A_2)
	{
		return (A_0 & A_2) | (A_1 & ~A_2);
	}

	private long b(long A_0, long A_1, long A_2)
	{
		return A_0 ^ A_1 ^ A_2;
	}

	private long a(long A_0, long A_1, long A_2)
	{
		return A_1 ^ (A_0 | ~A_2);
	}

	private long a(long A_0, int A_1)
	{
		long num = 4294967295L;
		long num2 = A_0 << A_1;
		long num3 = ~(num << A_1) & num;
		return ((A_0 >> 32 - A_1) & num3) | num2;
	}

	private long d(long A_0, long A_1, long A_2, long A_3, long A_4, int A_5, long A_6)
	{
		A_0 += d(A_1, A_2, A_3) + A_4 + A_6;
		A_0 = a(A_0, A_5);
		A_0 += A_1;
		return A_0;
	}

	private long c(long A_0, long A_1, long A_2, long A_3, long A_4, int A_5, long A_6)
	{
		A_0 += c(A_1, A_2, A_3) + A_4 + A_6;
		A_0 = a(A_0, A_5);
		A_0 += A_1;
		return A_0;
	}

	private long b(long A_0, long A_1, long A_2, long A_3, long A_4, int A_5, long A_6)
	{
		A_0 += b(A_1, A_2, A_3) + A_4 + A_6;
		A_0 = a(A_0, A_5);
		A_0 += A_1;
		return A_0;
	}

	private long a(long A_0, long A_1, long A_2, long A_3, long A_4, int A_5, long A_6)
	{
		A_0 += a(A_1, A_2, A_3) + A_4 + A_6;
		A_0 = a(A_0, A_5);
		A_0 += A_1;
		return A_0;
	}

	private void a(byte[] A_0, int A_1, byte[] A_2, int A_3)
	{
		for (int i = 0; i < A_3; i++)
		{
			A_0[i + A_1] = (byte)(A_2[i] & 0xFFu);
		}
	}

	private void a(byte[] A_0, byte[] A_1, int A_2, int A_3)
	{
		for (int i = 0; i < A_3; i++)
		{
			A_0[i] = A_1[i + A_2];
		}
	}

	internal void c()
	{
		this.m_c[0] = 0L;
		this.m_c[1] = 0L;
		this.m_d[0] = 1732584193L;
		this.m_d[1] = 4023233417L;
		this.m_d[2] = 2562383102L;
		this.m_d[3] = 271733878L;
	}

	private void a(byte[] A_0, int A_1, long[] A_2, int A_3)
	{
		int num = 0;
		int num2 = 0;
		while (num < A_3)
		{
			A_0[num2 + A_1] = (byte)(A_2[num] & 0xFF);
			A_0[num2 + 1 + A_1] = (byte)((A_2[num] >> 8) & 0xFF);
			A_0[num2 + 2 + A_1] = (byte)((A_2[num] >> 16) & 0xFF);
			A_0[num2 + 3 + A_1] = (byte)((A_2[num] >> 24) & 0xFF);
			num++;
			num2 += 4;
		}
	}

	private void a(long[] A_0, byte[] A_1, int A_2)
	{
		int num = 0;
		for (int i = 0; i < A_2; i += 4)
		{
			A_0[num] = ((long)A_1[i] & 0xFFL) | (long)(((ulong)A_1[i + 1] << 8) & 0xFF00) | (long)(((ulong)A_1[i + 2] << 16) & 0xFF0000) | (long)(((ulong)A_1[i + 3] << 24) & 0xFF000000u);
			num++;
		}
	}

	private void a(long[] A_0, long[] A_1)
	{
		long a_ = A_0[0];
		long num = A_0[1];
		long num2 = A_0[2];
		long num3 = A_0[3];
		int a_2 = 7;
		int a_3 = 12;
		int a_4 = 17;
		int a_5 = 22;
		a_ = d(a_, num, num2, num3, A_1[0], a_2, 3614090360L);
		num3 = d(num3, a_, num, num2, A_1[1], a_3, 3905402710L);
		num2 = d(num2, num3, a_, num, A_1[2], a_4, 606105819L);
		num = d(num, num2, num3, a_, A_1[3], a_5, 3250441966L);
		a_ = d(a_, num, num2, num3, A_1[4], a_2, 4118548399L);
		num3 = d(num3, a_, num, num2, A_1[5], a_3, 1200080426L);
		num2 = d(num2, num3, a_, num, A_1[6], a_4, 2821735955L);
		num = d(num, num2, num3, a_, A_1[7], a_5, 4249261313L);
		a_ = d(a_, num, num2, num3, A_1[8], a_2, 1770035416L);
		num3 = d(num3, a_, num, num2, A_1[9], a_3, 2336552879L);
		num2 = d(num2, num3, a_, num, A_1[10], a_4, 4294925233L);
		num = d(num, num2, num3, a_, A_1[11], a_5, 2304563134L);
		a_ = d(a_, num, num2, num3, A_1[12], a_2, 1804603682L);
		num3 = d(num3, a_, num, num2, A_1[13], a_3, 4254626195L);
		num2 = d(num2, num3, a_, num, A_1[14], a_4, 2792965006L);
		num = d(num, num2, num3, a_, A_1[15], a_5, 1236535329L);
		int a_6 = 5;
		int a_7 = 9;
		int a_8 = 14;
		int a_9 = 20;
		a_ = c(a_, num, num2, num3, A_1[1], a_6, 4129170786L);
		num3 = c(num3, a_, num, num2, A_1[6], a_7, 3225465664L);
		num2 = c(num2, num3, a_, num, A_1[11], a_8, 643717713L);
		num = c(num, num2, num3, a_, A_1[0], a_9, 3921069994L);
		a_ = c(a_, num, num2, num3, A_1[5], a_6, 3593408605L);
		num3 = c(num3, a_, num, num2, A_1[10], a_7, 38016083L);
		num2 = c(num2, num3, a_, num, A_1[15], a_8, 3634488961L);
		num = c(num, num2, num3, a_, A_1[4], a_9, 3889429448L);
		a_ = c(a_, num, num2, num3, A_1[9], a_6, 568446438L);
		num3 = c(num3, a_, num, num2, A_1[14], a_7, 3275163606L);
		num2 = c(num2, num3, a_, num, A_1[3], a_8, 4107603335L);
		num = c(num, num2, num3, a_, A_1[8], a_9, 1163531501L);
		a_ = c(a_, num, num2, num3, A_1[13], a_6, 2850285829L);
		num3 = c(num3, a_, num, num2, A_1[2], a_7, 4243563512L);
		num2 = c(num2, num3, a_, num, A_1[7], a_8, 1735328473L);
		num = c(num, num2, num3, a_, A_1[12], a_9, 2368359562L);
		int a_10 = 4;
		int a_11 = 11;
		int a_12 = 16;
		int a_13 = 23;
		a_ = b(a_, num, num2, num3, A_1[5], a_10, 4294588738L);
		num3 = b(num3, a_, num, num2, A_1[8], a_11, 2272392833L);
		num2 = b(num2, num3, a_, num, A_1[11], a_12, 1839030562L);
		num = b(num, num2, num3, a_, A_1[14], a_13, 4259657740L);
		a_ = b(a_, num, num2, num3, A_1[1], a_10, 2763975236L);
		num3 = b(num3, a_, num, num2, A_1[4], a_11, 1272893353L);
		num2 = b(num2, num3, a_, num, A_1[7], a_12, 4139469664L);
		num = b(num, num2, num3, a_, A_1[10], a_13, 3200236656L);
		a_ = b(a_, num, num2, num3, A_1[13], a_10, 681279174L);
		num3 = b(num3, a_, num, num2, A_1[0], a_11, 3936430074L);
		num2 = b(num2, num3, a_, num, A_1[3], a_12, 3572445317L);
		num = b(num, num2, num3, a_, A_1[6], a_13, 76029189L);
		a_ = b(a_, num, num2, num3, A_1[9], a_10, 3654602809L);
		num3 = b(num3, a_, num, num2, A_1[12], a_11, 3873151461L);
		num2 = b(num2, num3, a_, num, A_1[15], a_12, 530742520L);
		num = b(num, num2, num3, a_, A_1[2], a_13, 3299628645L);
		int a_14 = 6;
		int a_15 = 10;
		int a_16 = 15;
		int a_17 = 21;
		a_ = a(a_, num, num2, num3, A_1[0], a_14, 4096336452L);
		num3 = a(num3, a_, num, num2, A_1[7], a_15, 1126891415L);
		num2 = a(num2, num3, a_, num, A_1[14], a_16, 2878612391L);
		num = a(num, num2, num3, a_, A_1[5], a_17, 4237533241L);
		a_ = a(a_, num, num2, num3, A_1[12], a_14, 1700485571L);
		num3 = a(num3, a_, num, num2, A_1[3], a_15, 2399980690L);
		num2 = a(num2, num3, a_, num, A_1[10], a_16, 4293915773L);
		num = a(num, num2, num3, a_, A_1[1], a_17, 2240044497L);
		a_ = a(a_, num, num2, num3, A_1[8], a_14, 1873313359L);
		num3 = a(num3, a_, num, num2, A_1[15], a_15, 4264355552L);
		num2 = a(num2, num3, a_, num, A_1[6], a_16, 2734768916L);
		num = a(num, num2, num3, a_, A_1[13], a_17, 1309151649L);
		a_ = a(a_, num, num2, num3, A_1[4], a_14, 4149444226L);
		num3 = a(num3, a_, num, num2, A_1[11], a_15, 3174756917L);
		num2 = a(num2, num3, a_, num, A_1[2], a_16, 718787259L);
		num = a(num, num2, num3, a_, A_1[9], a_17, 3951481745L);
		A_0[0] += a_;
		A_0[1] += num;
		A_0[2] += num2;
		A_0[3] += num3;
	}

	public Class_c()
	{
		c();
	}

	public int a()
	{
		return global::Class_c.m_b;
	}

	internal void b(byte[] A_0, int A_1, int A_2)
	{
		long[] array = new long[16];
		int num = (int)((this.m_c[0] >> 3) & 0x3F);
		if (this.m_c[0] + (A_2 << 3) < this.m_c[0])
		{
			this.m_c[1]++;
		}
		this.m_c[0] += (long)A_2 << 3;
		this.m_c[1] += (long)A_2 >> 29;
		int num2 = 0;
		while (A_2-- > 0)
		{
			e[num++] = A_0[A_1 + num2++];
			if (num == 64)
			{
				a(array, e, 64);
				a(this.m_d, array);
				num = 0;
			}
		}
	}

	internal int b(byte[] A_0, int A_1)
	{
		if (A_0.Length - A_1 < global::Class_c.m_b)
		{
			return 0;
		}
		long[] array = new long[16]
		{
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			0L,
			this.m_c[0],
			this.m_c[1]
		};
		int num = (int)((this.m_c[0] >> 3) & 0x3F);
		int a_ = ((num < 56) ? (56 - num) : (120 - num));
		b(g, 0, a_);
		a(array, e, 56);
		a(this.m_d, array);
		a(A_0, A_1, this.m_d, 4);
		return global::Class_c.m_b;
	}

	static Class_c()
	{
		byte[] array = new byte[64];
		array[0] = 128;
		g = array;
	}
}
